﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Arrays_task_1
{
    class Program
    {
        static void Main(string[] args)
        {
            //Работает через раз: то успешно, то System.IndexOutOfRangeException в строке 31.
            //Даже если задаю для произведения тип лонг. Не понимаю:(
            Console.WriteLine("Enter a number of rows:");
            int numRows = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Enter a number of columns:");
            int numColumns = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Enter a floor value (negative numbers a welcome!):");
            int minValue = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Enter a ceiling value:");
            int maxValue = Int32.Parse(Console.ReadLine());
            Console.WriteLine("Here is the array:");
            int[,] testArray = CreateTwoDimensionalRandomUserDefinedArray(numColumns, numRows, minValue, maxValue);
            PrintArrayToConsole(testArray);
            int productOfNonZeroValues = 1;
            for (int i = 0; i < numRows; i++)
            {
                for (int j = 0; j < numColumns; j++)
                {
                    if (testArray[i,j] != 0)
                    {
                        productOfNonZeroValues *= testArray[i, j];
                    }
                    else
                    {
                        continue;
                    }
                }
            }
            Console.WriteLine("Product of all the non-zero elements is:\n{0}", productOfNonZeroValues);
            Console.ReadKey();
            //int evenCount = 0;
            //int oddCount = 0;
            //for (int i = 0; i < 2; i++)
            //{
            //    for (int j = 0; j < 3; j++)
            //    {
            //        if (testArray[i, j] != 0)
            //        {
            //            evenCount++;
            //        }
            //        else
            //        {
            //            oddCount++;
            //        }
            //    }
            //}
            //Console.WriteLine("Odd count: {0}", oddCount);
            //Console.WriteLine("Even count: {0}", evenCount);
        }

        static int [,] CreateTwoDimensionalRandomUserDefinedArray(int rowCount, int columnCount, int minValue, int maxValue)
        {
            int[,] newArray = new int[rowCount, columnCount];
            Random rnd = new Random();

            for (int i = 0; i < rowCount; i++)
            {
                for (int j = 0; j< columnCount; j++)
                {
                    newArray[i, j] = rnd.Next(minValue, maxValue + 1);
                }
            }
            return newArray;
        }

        //static void FillArrayWithRandomNumbers(int[,] array)
        //{
        //    Random rnd = new Random();
        //    for (int i = 0; i < array.GetLength(0); i++)
        //    {
        //        for (int j = 0; j < array.GetLength(1); j++)
        //        {
        //            array[i, j] = rnd.Next(1, 21);
        //        }
        //    }
        //}



        static void PrintArrayToConsole(int[,] arrayForPrint)
        {
            for (int i = 0; i < arrayForPrint.GetLength(0); i++)
            {
                for (int j = 0; j < arrayForPrint.GetLength(1); j++)
                {
                    Console.Write("{0}\t", arrayForPrint[i, j]);
                }
                Console.WriteLine();
            }
        }
    }
}
